package de.mnit.basis.swt.element.steuer.rollbar;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Scrollable;

import de.mnit.basis.swt.element.steuer.A_SWT_Steuer;
import de.mnit.basis.sys.Ausgabe;

/**
 * @author Michael Nitsche
 */
public abstract class A_SWT_Rollbar<TA extends A_SWT_Rollbar<?,?>, TB extends Scrollable> extends A_SWT_Steuer<TA,TB> {

	private boolean hscroll=false, vscroll=false;

	// FUNKTION

	@SuppressWarnings("unchecked")
	public TA s1_Rollbalken_H() {
		PN_Erzeugt();
		this.hscroll=true;
		return (TA)this;
	}

	@SuppressWarnings("unchecked")
	public TA s1_Rollbalken_V() {
		PN_Erzeugt();
		this.vscroll=true;
		return (TA)this;
	}

	// ERZEUGEN

	protected final int style3() {
		int style=style4();
		if(hscroll)
			style=style|SWT.H_SCROLL;
		if(vscroll)
			style=style|SWT.V_SCROLL;
		return style;
	}

	protected final void init3() {
		if(hscroll) {
			ScrollBar h=swt().getHorizontalBar();
			if(h==null)
				Ausgabe.debug("Horizontale Bildlaufleiste wurde nicht erzeugt!");
			else {
				h.setIncrement(10);
				h.setPageIncrement(50);
			}
		}
		if(vscroll) {
			ScrollBar v=swt().getVerticalBar();
			if(v==null)
				Ausgabe.debug("Vertikale Bildlaufleiste wurde nicht erzeugt!");
			else {
				v.setIncrement(10);
				v.setPageIncrement(50);
			}
		}
		init4();
	}

	protected abstract int style4();
	protected abstract void init4();

}

